package com.ledou44.blokus.service;

import com.alibaba.fastjson.JSON;
import com.ledou44.blokus.vo.Message;

import javax.websocket.Session;
import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

/**
 * @author ledou44
 * webSocketService工具类
 */
public class WebSocketServiceHelper {

    /**
     * 发送消息给指定对象
     *
     * @param session 用户session
     * @param message 消息主体
     */
    public void sendMessage(Session session, Map<String, Object> message) {
        if (session != null) {
            try {
                session.getBasicRemote().sendText(JSON.toJSONString(message));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 发送消息给所有对象（并随机生成选手的棋子颜色）
     *
     * @param message 消息主体
     */
    public void sendAllMessageWithChessColor(Map<String, Object> message, Map<String, Session> clients) {
        Collection<Session> sessions = clients.values();
        int i = 1;
        for(Session session : sessions) {
            try {
                message.put("chessColor",i);
                i += 1;
                session.getBasicRemote().sendText(JSON.toJSONString(message));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 发送消息给除了指定对象的所有对象
     *
     * @param userId 用户sessionId
     * @param message 消息主体
     */
    public void sendMessageExcept(String userId, Message message, Set<Session> clients) {
        for(Session session : clients) {
            if(session.getId().equals(userId)) {
                continue;
            }
            try {
                session.getBasicRemote().sendText(JSON.toJSONString(message));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
